#pragma once
/*
    存储一条完整日志消息所需要的各个字段：
        1. 日志输出时间
        2. 日志等级         —— 进行日志过滤分析
        3. 源文件名称
        4. 源代码行号
        5. 线程 id
        6. 日志主体消息     —— 内容
        7. 日志器名称   ——支持多日志器，用来区分不同模块组的日志
*/

#include <iostream>
#include <string>
#include "2_level.hpp"
#include <thread>
#include "1_util.hpp"
namespace senlog
{
    struct LogMsg
    {
        time_t _ctime;
        const senlog::LogLevel::value _level;
        size_t _line;
        std::thread::id _tid;
        std::string _loggername;
        std::string _filename;
        std::string _payload; // 有效载荷：日志消息主题

        LogMsg(const senlog::LogLevel::value &level
        , const size_t &line
        , const std::string &filename
        , const std::string &loggername
        , const std::string &payload)
            : _ctime(senlog::util::Date::getTime())
            , _level(level)
            , _line(line)
            , _tid(std::this_thread::get_id())
            , _loggername(loggername)
            , _filename(filename)
            , _payload(payload)
        {}
    };
};